package StackAndQueueSeries;

import java.util.Stack;

public class MyQueueSolution_232 {
    Stack<Integer> stackIn;
    Stack<Integer> stackOut;

    public MyQueueSolution_232() {
        stackIn = new Stack<>(); // 进栈
        stackOut = new Stack<>(); // 出栈
    }

    // 队列元素入队
    public void push(int x) {
        stackIn.push(x);
    }

    // 队列元素出队
    public int pop() {
        // 出队栈没有元素，将入队栈的元素全部放入出队栈
        if (stackOut.isEmpty()) {
            while (!stackIn.isEmpty()) {
                int x = stackIn.pop();
                stackOut.push(x);
            }
            return stackOut.pop();
        } else {
            return stackOut.pop();
        }
    }

    // 获取对列开头的元素
    public int peek() {
        if (stackOut.isEmpty()) {
            while (!stackIn.isEmpty()) {
                int x = stackIn.pop();
                stackOut.push(x);
            }
        }
        return stackOut.peek();
    }

    public boolean empty() {
        return stackIn.isEmpty() && stackOut.isEmpty();
    }
}
